有一個比較兩個數字的函數,可以比較整數、浮點數,甚至是字串。如果不使用泛型,需要為每種不同類型寫一個不同的比較函數。但有了泛型,就可以寫一個通用的比較函數,可以比較各種不同類型的數據。
泛型是一種概念。在沒有泛型支持的Golang中,經常需要使用 接口
和 空接口
(interface{})來實現通用性。但現在,有了泛型,可以更簡單地處理不同類型
的數據,並減少代碼重複
。
這個 Compare函數
可以接受 不同類型
的輸入,例如整數和字符串,並返回比較結果。這樣的泛型函數在程式碼中可以大大減少冗長的比較函數。
package main
import "fmt"
// 泛型比較函數
func Compare[T comparable](a, b T) int {
if a < b {
return -1
} else if a > b {
return 1
}
return 0
}
func main() {
result := Compare(5, 10)
fmt.Println(result) // 輸出:-1
result = Compare("apple", "banana")
fmt.Println(result) // 輸出:-1
}
Slice 類型可以用於創建包含不同類型元素的切片,就不需要幫每種數據類型創建一個新切片。
package main
import "fmt"
// 泛型切片
type Slice[T any] []T
func main() {
// 創建一個泛型切片
nums := Slice[int]{1, 2, 3, 4, 5}
fruits := Slice[string]{"apple", "banana", "cherry"}
fmt.Println(nums) // 輸出:[1 2 3 4 5]
fmt.Println(fruits) // 輸出:[apple banana cherry]
}
泛型讓程式碼更具通用性,減少落落長的程式碼,可以提高可讀性和重用性。
今天我爸早上跟狗狗說:把你洗香香在帶去寵物旅館才會有人疼
搞得好像要被送去當童養媳(XD